package cn.xiaomubiao.oschine.base;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * 每一个大模块中viewPager中的Fragment的基类
 *
 * @author 张伟斌
 */

public abstract class BaseEachFragment extends Fragment {

    protected Activity mActivity;
    // 公共加载流程类 对象
    protected CommonPager mCommonPager;
    // protected int pagerId;

    // 构造方法
    public BaseEachFragment() {

        mCommonPager = new CommonPager() {

            @Override
            public View loadSuccess() {
                View view = BaseEachFragment.this.loadSuccess();

                return view;

            }

            @Override
            public void loadData() {
                BaseEachFragment.this.loadData();

            }
        };

    }

    // Fragment视图初始化
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        mActivity = getActivity();
        // 返回CommonPager类中的通用布局的对象进行显示
        return mCommonPager.mRootView;

    }

    // 由子类具体实现的方法 ------------------- ↓↓
    // 加载成功的具体界面显示
    public abstract View loadSuccess();

    // 加载数据的具体逻辑
    public abstract void loadData();
    // --------------------------------------- ↑↑


 /*   // 当Fragment可见时调用 （跳转到activity中失效
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        // 判断当前fragment是否可见 并且是否数据已经加载成功显示
        if (isVisibleToUser && !mCommonPager.isLoadSuccess) {
            // 1 进度条界面
            mCommonPager.loading();
            // 2 数据的加载逻辑
            loadData();
        }

    }*/

    // 当fragment获取焦点时调用加载数据的方法
    @Override
    public void onResume() {
        super.onResume();

        mCommonPager.loading();
        // 2 数据的加载逻辑
        loadData();

    }

    /*// 提供设置详情页面的id的方法
    public void setPagerId(int pagerId) {
        this.pagerId = pagerId;

    }*/

}